/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package submarines.ui;
import java.util.LinkedList;

import java.io.*;
import java.lang.String;
import submarines.*;
/**
 *
 * @author elad
 */
public interface Ui {

    static enum playerType{
       HUMAN_PLAYER,
       COMPUTER_PLAYER;
       
        @Override
       public String toString() {
           switch (this) {
               case HUMAN_PLAYER:
                   return "HUMAN";
               case COMPUTER_PLAYER:
                   return "COMPUTER";
           }
           return "";
       };
   }

    String getMissleCoords();
    
    public Main.quitAction getNewGameAswer();
            
    //Ask the player the submarine direction
    int getSubmarineDirection(int subSize);
    
    //Ask the player the submarine row
    int getSubmarineRow(int subSize, int minRow, int maxRow);
    
    //Ask the player the submarine column
    int getSubmarineCol(int subSize, int minCol, int maxCol);
    
   // Ask the player what he want's to do next
   TurnManager.turnAction getPlayersNextMove();
   
   String getTargetedPlayer(LinkedList<String> list);
   
   //Ask the player for number of players
   int getNumberOfPlayers();
   
   //Ask the player if a player is human or computer
   playerType getPlayerType();
   
   //Ask Player for his name
   String getPlayerName();
   
   // Ask Player if another player will join the game
   boolean addAnotherPlayer();
   
   void printAlert(String msg);
   
   void printBoard(Board toPrint);
   
   void clearScreen();
   
   void printEnemyBoard(enemyBoard board);
   
   String askUserYesNoQuestions(String question);
   
   public void printComputerMove(String attacker, enemyBoard board, int row, int col);
}
